package com.wlc.oop.demo08.numberandstr;

/**
 * @author 王立朝 wanglichao@champion-credit.com
 * @description 数字与字符串   装箱与拆箱
 * @date 2021-07-08 09:09
 */
public class Demo01 {

    /**
     * 1、封装类
     */
    public void method01() {
        int i = 5;
        // 把一个基本类型变量，转换为Integer 封装类型
        Integer integer = new Integer(i);
        // 把一个Integer 封装类型转换为 int类型
        int i1 = integer.intValue();
        System.out.println("integer = " + integer);
        System.out.println("i1 = " + i1);
    }

    /**
     * 2、数字封装类Number
     */
    public void method02() {
        // 数字封装类有：  Byte ,Short , Double, Float, Long ,Integer
        // 这些类都是Number 的子类
        int i = 5;
        Integer integer = new Integer(i);
        // integer 指向的类new Integer 是 Number 的子类
        System.out.println(integer instanceof Number);

    }

    /**
     * 3、基本类型转封装类
     */
    public void method03() {
        int i = 6;
        // 基本类型转换成封装类型
        Integer integer = new Integer(i);
        double d = 5.0;
        Double aDouble = new Double(d);
        float f = 5.2f;
        Float aFloat = new Float(f);
        byte b = 2;
        Byte aByte = new Byte(b);
        char c = '2';
        Character character = new Character(c);
        System.out.println("character = " + character);

    }

    /**
     * 4、封装类行转基本类型
     */
    public void method04() {
        int i = 6;
        // 基本类型转换成封装类型
        Integer integer = new Integer(i);
        // 封装类型转基本类型
        int i1 = integer.intValue();
        double d = 4.0;
        // double基本类型转封装类型
        Double aDouble = new Double(d);
        // 封装类型转基本类型
        double v = aDouble.doubleValue();


    }

    /**
     * 5、自动装箱：  基本类型转换为类类型，通过 =就是自动装箱； 不需要使用构造方法法
     */
    public void method05() {
        int i = 4;
        // 通过构造器把基本类型转换成类类型
        Integer integer = new Integer(i);
        // 直接通过等于号就可以把基本类型转换为类类型
        Integer integer1 = i;
        System.out.println(integer instanceof Integer);
        System.out.println("=======");
        byte b = 2;
        // 把基本类型转换成封装类型： 自动装箱
        Byte b1 = b;

    }

    /**
     * 6、自动拆箱：  封装类型转换为基本类型
     */
    public void method06() {
        int i = 7;
        Integer integer = i;
        // 通过integer.intValue() 把 封装类型转换为基本类型
        int i1 = integer.intValue();
        // 通过 =  把封装类型转换为基本类型
        int number = integer;
        System.out.println("=====");
        byte b = 2;
        // 把基本类型转换成封装类型： 自动装箱
        Byte b1 = b;
        // 把封装类型转换曾呢基本类型
        byte b2 = b1;
        System.out.println("b2 = " + b2);
    }

    /**
     * 7、 int基本类型的最大/最小值
     */
    public void method07(){
        System.out.println("Integer.MAX_VALUE = " + Integer.MAX_VALUE);
        System.out.println("Integer.MIN_VALUE = " + Integer.MIN_VALUE);

        System.out.println("Byte.MAX_VALUE = " + Byte.MAX_VALUE);
        System.out.println("Byte.MIN_VALUE = " + Byte.MIN_VALUE);
    }

    /**
     * main 主方法
     * @param args
     */
    public static void main(String[] args) {
        Demo01 demo01 = new Demo01();
        demo01.method07();
    }
}
